package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.enums.StatusColetaDados;
import br.com.foxinline.modelo.*;
import br.com.foxinline.servico.*;
import br.com.foxinline.util.Msg;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author roniere
 */
@ManagedBean
@ViewScoped
public class ManagerPesquisarColetaDados implements Serializable {

    @EJB
    private ColetaDadosServico coletaDadosServico;
    @EJB
    private UsuarioServico usuarioServico;
    @EJB
    private SituacaoColetaDadosServico situacaoColetaDadosServico;
    @EJB
    private CoordenadaServico coordenadaServico;
    @EJB
    private QuadraServico quadraServico;
    private List<ColetaDados> coletaDados;
    private ColetaDados coleta;
    private Setor setor;
    private Quadra quadra;
    private SituacaoColetaDados situacaoColetaDados;
    private List<SituacaoColetaDados> situacaoColetaDadoses;
    private Usuario usuario;
    private StatusColetaDados statusColetaDados;

    @PostConstruct
    private void init() {
        Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

        if (params.get("id") != null) {
            coleta = coletaDadosServico.find(Long.parseLong(params.get("id")));
        } else if (params.get("q") != null) {
            coleta = coletaDadosServico.buscarColetaDados(Long.parseLong(params.get("q")));
        }

        if (coleta != null) {
            quadra = coleta.getQuadra();
            setor = quadra.getSetor();
            situacaoColetaDadoses = situacaoColetaDadosServico.buscarSituacao(quadra.getId());
        } else {
            quadra = new Quadra();
            setor = new Setor();
        }
    }

    public void pesquisar() {
        coletaDados = coletaDadosServico.buscarColetaDados(quadra.getNumero(), (setor != null ? setor.getNumero() : null),
                usuario, statusColetaDados);
    }

    public void remover() {
        try {
            situacaoColetaDadoses.remove(situacaoColetaDados);
            coleta.setSituacaoColetaDados(situacaoColetaDadoses);
            coletaDadosServico.update(coleta);
            situacaoColetaDadoses = situacaoColetaDadosServico.buscarSituacao(quadra.getId());
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception e) {
            Msg.messagemInfo(Msg.Failure);
            e.printStackTrace();
        }
    }

    public List<ColetaDados> getColetaDados() {
        return coletaDados;
    }

    public void setColetaDados(List<ColetaDados> coletaDados) {
        this.coletaDados = coletaDados;
    }

    public ColetaDados getColeta() {
        return coleta;
    }

    public void setColeta(ColetaDados coleta) {
        this.coleta = coleta;
    }

    public Quadra getQuadra() {
        return quadra;
    }

    public void setQuadra(Quadra quadra) {
        this.quadra = quadra;
    }

    public Setor getSetor() {
        return setor;
    }

    public void setSetor(Setor setor) {
        this.setor = setor;
    }

    public SituacaoColetaDados getSituacaoColetaDados() {
        return situacaoColetaDados;
    }

    public void setSituacaoColetaDados(SituacaoColetaDados situacaoColetaDados) {
        this.situacaoColetaDados = situacaoColetaDados;
    }

    public List<SituacaoColetaDados> getSituacaoColetaDadoses() {
        return situacaoColetaDadoses;
    }

    public void setSituacaoColetaDadoses(List<SituacaoColetaDados> situacaoColetaDadoses) {
        this.situacaoColetaDadoses = situacaoColetaDadoses;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public StatusColetaDados getStatusColetaDados() {
        return statusColetaDados;
    }

    public void setStatusColetaDados(StatusColetaDados statusColetaDados) {
        this.statusColetaDados = statusColetaDados;
    }
}
